package com.atguigu.service.impl;

import com.atguigu.dao.ProductDao;
import com.atguigu.pojo.PageBean;
import com.atguigu.pojo.Product;
import com.atguigu.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class ProductServiceImpl implements ProductService {
    @Autowired
    private ProductDao productDao;
    /**
     * 业务层的方法：
     *   接收Web层传递的参数 当前是第几页，每页显示多少条数据
     *   调用持久层查询数据库，封装好对象PageBean，并返回
     */
    @Override
    public PageBean<Product> queryProductByPage(Integer currentPage, Integer pageSize) {
        PageBean<Product> pb = new PageBean<Product>();
        //存储当前的页数
        pb.setCurrentPage(currentPage);
        //存储每一页显示的条数
        pb.setPageSize(pageSize);
        //存储查询到的商品对象
        //调用持久层的方法，查询商品对象 （SQL，加入Limit）
        //传递持久层两个参数， (当前页-1)*每页显示多少条， 每页显示多少条
        List<Product> productList = productDao.queryProductByPage((currentPage - 1) * pageSize, pageSize);
        pb.setList(productList);

        //存储查询到的商品的总数据量
        //调用持久层的方法，聚合函数
        Long totalCount = productDao.queryProductByCount();
        pb.setTotalCount(totalCount);

        //存储总页数
        //计算方法  总条数/每页显示多少条 10 / 3
        pb.setTotalPage( (int)Math.ceil(totalCount*1.0 / pageSize) );

        return pb;
    }
}
